﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
using System.Text;

public partial class PageClear : System.Web.UI.Page
{
    
    protected void Page_Load(object sender, EventArgs e)
    {
        //用户没有登录的话。
        if (Page.User.Identity.Name == "")
            Response.Redirect("/Login.aspx");
        //目录页生成最小时间间隔（小时）
        int ipagemin = Convert.ToInt32(ConfigurationSettings.AppSettings["pagemin"].ToString());
        //内容页生成最小间隔（天）
        int icontentmin = Convert.ToInt32(ConfigurationSettings.AppSettings["contentpagemin"].ToString());
        //书籍根目录/bookroot/
        string sBookRoot=ConfigurationManager.AppSettings["booktemp"];
        string sURL = "";
        if (Request.QueryString["pagename"] != null)
            sURL = Request.QueryString["pagename"].ToString();
        else
        {
            Response.Redirect("/index.htm");
            return;
        }
        //网页名称
        string sPageName = URLSub.getPageName(sURL);
        //主机名称
        string sHostName = URLSub.getHostName(sURL);
        //网页目录
        string sPathName = URLSub.getPathName(sURL);
        //获得映射地址即C:\website\格式。
        string sFileMapPath=HttpContext.Current.Server.MapPath(sBookRoot+sPathName+sPageName);
        string sDirMapPath = HttpContext.Current.Server.MapPath(sBookRoot + sPathName );

        //正则表达式列表
        RegList reglist;
        //目录页是否存在
        bool bIndexExists=false;
        //从数据库中检索出RegList
        reglist = GetData.getRegList(sHostName);
        //目录页地址
        string sIndexURL="http://" + sPathName + reglist.DefaultIndex;
        IndexInfo info = GetData.getIndexInfo(sIndexURL);

        //增加统计
        BookManger.visitBook(info.BookID);
        //完整的目录页物理地址
        string sIndexMapPath=sDirMapPath+reglist.DefaultIndex;
        //是否存在目录页，并且检查写入时间，如果小于指定数值，则表示已存在。
        if (File.Exists(sIndexMapPath))
        {
            FileInfo fileinfo = new FileInfo(sIndexMapPath);
            if (DateTime.Now.Subtract(fileinfo.LastWriteTime).Hours < ipagemin)
                bIndexExists = true;
        }
        //检查是否目录页，是则直接生成目录文件。不是则生成内容网页。
        if (sPageName.ToLower() == reglist.DefaultIndex.ToLower()||sPageName=="")
        {
            if (!bIndexExists)
            {
                GetData.buildIndex(sIndexURL,reglist,info);
            }
            sFileMapPath = sIndexMapPath;
        }
        else
        {
            //检查内容文件是否存在并且日期小于指定的间隔
            bool bPageExists = false;
            if (File.Exists(sFileMapPath))
            {
                FileInfo fileinfo = new FileInfo(sFileMapPath);
                if (DateTime.Now.Subtract(fileinfo.LastWriteTime).Days < icontentmin)
                    bPageExists = true;
            }

            if (!bPageExists)
            {
                if(!bIndexExists)
                    GetData.buildIndex(sIndexURL, reglist,info);
                //创建页面。
                GetData.buildPage(sURL, reglist,info);
            }
        }
	
        Response.WriteFile(sFileMapPath); 
	    Response.End();
    }
}